package edu.unmsm.ocaa.sisocaa.negocio.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.faces.model.SelectItem;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import edu.unmsm.ocaa.sisocaa.negocio.model.dto.DependenciaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.FichaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.model.dto.TipoPersonaDTO;
import edu.unmsm.ocaa.sisocaa.negocio.service.DependenciaService;
import edu.unmsm.ocaa.sisocaa.negocio.service.FichaService;
import edu.unmsm.ocaa.sisocaa.negocio.service.FormulariosService;
import edu.unmsm.ocaa.sisocaa.negocio.service.UsuarioService;

@Service
public class FormulariosServiceImpl implements FormulariosService {

	public ArrayList<SelectItem> opcRespCuest;
	@Resource
	DependenciaService depserv;
	@Resource
	FichaService fichaserv;
	
	@Resource
	UsuarioService usuServ;

	public ArrayList<SelectItem> listitTipReps=new ArrayList<SelectItem>();
	public Map mapTipReps=new HashMap();
	
	public FormulariosServiceImpl() {
		super();
		mapTipReps.put(1, "Reporte de registro por usuario");
		mapTipReps.put(2, "Reporte porcentual");
		mapTipReps.put(3, "Reporte de ponderacion");
		mapTipReps.put(6, "Reporte de ponderacion 2");
		mapTipReps.put(4, "Reporte de registros por preguntas");
		llenarListTipReportes(2);
	}
	public void llenarListTipReportes(Integer anonimo) {
		listitTipReps=new ArrayList<SelectItem>();
		listitTipReps.add(new SelectItem(null,""));
		if (anonimo==1) {
			listitTipReps.add(new SelectItem(1,"Reporte de registro por usuario"));
			listitTipReps.add(new SelectItem(2,"Reporte porcentual"));
			listitTipReps.add(new SelectItem(3,"Reporte de ponderacion"));
			listitTipReps.add(new SelectItem(6,"Reporte de ponderacion 2"));
			listitTipReps.add(new SelectItem(4,"Reporte de registros por preguntas"));
		} else if (anonimo==0) {
			listitTipReps.add(new SelectItem(2,"Reporte porcentual"));
			listitTipReps.add(new SelectItem(3,"Reporte de ponderacion"));		
		}
	}
	public ArrayList<SelectItem> ObtenerListaOpciones(ArrayList<SelectItem> list)
			throws DataAccessException {
		//opcRespCuest=new ArrayList<SelectItem>();
		try {
			list.add(new SelectItem(1,"SI"));
			list.add(new SelectItem(0,"NO"));			
		} catch (Exception e) {
			// TODO: handle exception
		}
	
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaTipSer(ArrayList<SelectItem> list)
			throws DataAccessException {
		try {
			List<TipoPersonaDTO> listipUsu=usuServ.listarTipUsuarios();
			list.add(new SelectItem(null,""));
			for (int i = 0; i < listipUsu.size(); i++) {
				list.add(new SelectItem(listipUsu.get(i).getId_tipoper(),listipUsu.get(i).getDesc_tipoper()));
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaTipResp(ArrayList<SelectItem> list)
			throws DataAccessException {
		// TODO Auto-generated method stub
		try {
			list.add(new SelectItem(null,""));
			list.add(new SelectItem(1,"Se marca solo una opcion"));
			list.add(new SelectItem(2,"Se marca mas de una opcion"));
		} catch (Exception e) {
			// TODO: handle exception
		}
	
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaformus(ArrayList<SelectItem> list)
			throws DataAccessException {
		// TODO Auto-generated method stub
		try {
			list.add(new SelectItem(1,"Encuesta"));
			list.add(new SelectItem(2,"Cuestionario"));
		} catch (Exception e) {
			// TODO: handle exception
		}
	
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaDeps() throws DataAccessException {
		// TODO Auto-generated method stub
		ArrayList<SelectItem> list=new ArrayList<SelectItem>();
		List<DependenciaDTO> deps=depserv.listarDependencias();
		list.add(new SelectItem(null,"Escoja una opcion"));
		list.add(new SelectItem(0,"Para todas las dependencias"));
		for (int i = 0; i < deps.size(); i++) {
			DependenciaDTO dep=deps.get(i);
			list.add(new SelectItem(dep.getId_dep(), dep.getDescrip_dep()));
		}
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaEstados()
			throws DataAccessException {
		// TODO Auto-generated method stub
		ArrayList<SelectItem> list=new ArrayList<SelectItem>();
		list.add(new SelectItem(null,""));
		list.add(new SelectItem(1,"Activo"));
		list.add(new SelectItem(0,"Inactivo"));

		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaFichaxTipo(Integer tipo, Integer id_dep)
			throws DataAccessException {
		// TODO Auto-generated method stub
		ArrayList<SelectItem> list=new ArrayList<SelectItem>();
		List<FichaDTO> listfichas=fichaserv.obtenerFichaxTipo(tipo, id_dep);
		for (int i = 0; i < listfichas.size(); i++) {
			FichaDTO ficha=listfichas.get(i);
			list.add(new SelectItem(ficha.getId_ficha(),ficha.getTit_ficha()));	
		}
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaTipoReportes()
			throws DataAccessException {
		// TODO Auto-generated method stub
		return listitTipReps;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaPuntajes()
			throws DataAccessException {
		// TODO Auto-generated method stub
		ArrayList<SelectItem> list=new ArrayList<SelectItem>();
		list.add(new SelectItem(0,"0"));
		list.add(new SelectItem(1,"1"));
		return list;
	}

	@Override
	public ArrayList<SelectItem> ObtenerListaFicha(Integer id_dep) {
		// TODO Auto-generated method stub
		ArrayList<SelectItem> list=new ArrayList<SelectItem>();
		List<FichaDTO> listfichas=fichaserv.obtenerFichas(id_dep);
		list.add(new SelectItem(null,"ninguna"));
		for (int i = 0; i < listfichas.size(); i++) {
			FichaDTO ficha=listfichas.get(i);
			list.add(new SelectItem(ficha.getId_ficha(),ficha.getTit_ficha()));	
		}
		return list;
	}

	@Override
	public String ObtenerTipoReporte(Integer idTipRep)
			throws DataAccessException {
		// TODO Auto-generated method stub
		String dsc="";
		dsc=(String)mapTipReps.get(idTipRep);
		return dsc;
	}

}
